'use strict'

const Hotel = require('./Hotel')
const Busca = require('./Busca')
const Tarifa = require('./Tarifa')
const Orcamento = require('./Orcamento')

class AppHotel {

    constructor() {
        this.hoteis = new Array()
        this.buscador = new Busca()
        this.orcamentos = new Orcamento()
    }

    criarTarifa(regular, fidelidade, regularFinalSemana, fidelidadeFinalSemana) {
        const tarifa = new Tarifa()
        tarifa.setPrecoSemana(regular, fidelidade)
        tarifa.setPrecoFinalSemana(regularFinalSemana, fidelidadeFinalSemana)
        return tarifa
    }

    cadastrarHoteis(){
        const tarifa = this.criarTarifa(110, 80, 90, 80)
        this.cadastrarHotel('Lakewood',3, tarifa)        
        const tarifa1 = this.criarTarifa(160, 110, 60, 50)
        this.cadastrarHotel('Bridgewood',4, tarifa1)        
        const tarifa2 = this.criarTarifa(220, 100, 150, 40)
        this.cadastrarHotel('Ridgewood',5, tarifa2)
    }

    cadastrarHotel(nome, classificacao, tarifa){
        const hotel = new Hotel(nome, classificacao, tarifa)
        this.hoteis.push(hotel)
    }

    buscarHotelMenorPreco(orcamento){
        return this.buscador.buscarHotelMenorPreco(orcamento)
    }

    gerarOrcamentos(hoteis, estadia){
        return this.orcamentos.montarOrcamentos(hoteis, estadia)
    }

    setEstadia(estadia) {
        this.estadia = estadia
    }

    setOrcamentos(orcamentos){
        this.orcamentos = orcamentos
    }
    getOrcamentos(){
        return this.orcamentos
    }

    getHoteis(){
        return this.hoteis
    }

    getEstadia(){
        return this.estadia
    }

}

module.exports = AppHotel